#ifndef LOCALFILEMANAGER_H
#define LOCALFILEMANAGER_H

#include "ftpclientui_global.h"
#include <QObject>
#include <QString>
#include <QFileInfo>
#include <QList>

class FTPCLIENTUI_EXPORT LocalFileManager : public QObject
{
    Q_OBJECT

public:
    struct FileInfo {
        QString fileName;
        QString fileType;
        qint64 fileSize;
        QString creationTime;
        bool isDirectory;
        QString filePath;
    };

    explicit LocalFileManager(QObject *parent = nullptr);
    ~LocalFileManager();

    // 获取指定路径下的文件列表
    QList<FileInfo> getFileList(const QString &path);
    
    // 获取文件信息
    FileInfo getFileInfo(const QString &filePath);
    
    // 检查文件是否存在
    bool fileExists(const QString &filePath);
    
    // 检查是否是目录
    bool isDirectory(const QString &path);
    
    // 创建目录
    bool createDirectory(const QString &path);
    
    // 删除文件或目录
    bool deleteFile(const QString &filePath);
    
    // 重命名文件
    bool renameFile(const QString &oldFilePath, const QString &newFileName);
    
    // 获取文件大小的格式化字符串
    QString formatFileSize(qint64 size);
    
    // 获取系统默认目录
    QString getDefaultDirectory();
    
    // 获取父目录
    QString getParentDirectory(const QString &path);

signals:
    // 文件操作相关信号
    void fileListUpdated(const QList<FileInfo> &fileList);
    void errorOccurred(const QString &errorMessage);
    void operationSuccess(const QString &operation);

private:
    // 转换QFileInfo到自定义FileInfo
    FileInfo convertToFileInfo(const QFileInfo &qFileInfo);
    
    // 扫描目录并递归获取文件列表
    void scanDirectory(const QString &path, QList<FileInfo> &fileList);
};

#endif // LOCALFILEMANAGER_H